﻿using System;
using System.Collections.Generic;
using System.IO;
using Autodesk.Revit.DB;
using FlexCell;
using YArchitech.Controls;
using YArchitech.Revit;
using HyMaterialStatistic;

namespace ElectricMaterialStatistic
{
	internal class ElectricEquipMaterialList
	{
        public ElectricEquipMaterialList(Document doc, List<Dictionary<int, SatatisticDataInfo>> lstDicElement, string gridName, GridSetInfo gridSetInfo, ref FlexCell.Grid grid)
		{
			this.m_doc = doc;
			this.m_grid = grid;
			this.m_lstDicElems = lstDicElement;
			this.m_strGridName = gridName;
			this.m_gridSetInfo = gridSetInfo;
		}

		public bool GetStatisticGrid()
		{
			if (this.m_lstDicElems.Count <= 0)
			{
				return false;
			}
			this.m_grid.Locked = false;
			this.GetEquipmentData();
			this.GetMertialData();
			if (!this.m_gridSetInfo.TitleDown)
			{
				if (!this.SetDataToGridUp())
				{
					return false;
				}
			}
			else if (!this.SetDataToGridDown())
			{
				return false;
			}
			return true;
		}

		private void GetEquipmentData()
		{
			if (this.m_doc == null)
			{
				return;
			}
			int num = 1;
			foreach (Dictionary<int, SatatisticDataInfo> dictionary in this.m_lstDicElems)
			{
				if (dictionary.Count > 0)
				{
					Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary2 = new Dictionary<int, ElectricEquipMaterialList.GridParameter>();
					foreach (KeyValuePair<int, SatatisticDataInfo> keyValuePair in dictionary)
					{
						ElementId elementId = new ElementId(keyValuePair.Key);
						this.m_doc.GetElement(elementId);
						int key = -1;
						if (this.EquipElemExsit(keyValuePair.Value.Name, keyValuePair.Value.LstFilter, dictionary2, out key))
						{
							string text = (Convert.ToDouble(dictionary2[key].LstParm[4]) + keyValuePair.Value.Amount).ToString("0.00");
							if (text.IndexOf('.') != -1)
							{
								text = text.TrimEnd(new char[]
								{
									'0'
								});
								text = text.Trim(new char[]
								{
									'.'
								});
							}
							dictionary2[key].LstParm[4] = text.ToString();
						}
						else
						{
							List<string> list = new List<string>();
							list.Insert(0, num.ToString());
							list.Insert(1, keyValuePair.Value.Name);
							list.Insert(2, "");
							list.Insert(3, keyValuePair.Value.Unit);
							string text2 = keyValuePair.Value.Amount.ToString("0.00");
							if (text2.IndexOf('.') != -1)
							{
								text2 = text2.TrimEnd(new char[]
								{
									'0'
								});
								text2 = text2.Trim(new char[]
								{
									'.'
								});
							}
							list.Insert(4, text2);
							list.Insert(5, "");
							dictionary2.Add(num, new ElectricEquipMaterialList.GridParameter(list, keyValuePair.Value.LstElemParm, keyValuePair.Value.LstFilter));
							num++;
						}
					}
					this.m_lstDicEquipData.Add(dictionary2);
				}
			}
		}

		private void GetMertialData()
		{
			if (this.m_doc == null)
			{
				return;
			}
			int index;
			if (this.m_gridSetInfo.Legend)
			{
				index = 5;
			}
			else
			{
				index = 4;
			}
			int num = 1;
			foreach (Dictionary<int, SatatisticDataInfo> dictionary in this.m_lstDicElems)
			{
				if (dictionary.Count > 0)
				{
					Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary2 = new Dictionary<int, ElectricEquipMaterialList.GridParameter>();
					foreach (KeyValuePair<int, SatatisticDataInfo> keyValuePair in dictionary)
					{
						ElementId elementId = new ElementId(keyValuePair.Key);
						Element element = this.m_doc.GetElement(elementId);
						string text;
						if (element is FamilyInstance)
						{
							text = (element as FamilyInstance).Symbol.Family.Name;
						}
						else
						{
							text = element.GetParameter(BuiltInParameter.ELEM_FAMILY_PARAM).AsValueString() + "_" + element.Name;
						}
						int key = -1;
						if (this.MaterialElemExsit(text, keyValuePair.Value.LstFilter, dictionary2, out key))
						{
							string text2 = (Convert.ToDouble(dictionary2[key].LstParm[index]) + keyValuePair.Value.Amount).ToString("0.00");
							if (text2.IndexOf('.') != -1)
							{
								text2 = text2.TrimEnd(new char[]
								{
									'0'
								});
								text2 = text2.Trim(new char[]
								{
									'.'
								});
							}
							dictionary2[key].LstParm[index] = text2.ToString();
						}
						else
						{
							List<string> list = new List<string>();
							int num2 = 0;
							list.Insert(num2, num.ToString());
							if (this.m_gridSetInfo.Legend)
							{
								list.Insert(++num2, keyValuePair.Value.FamilyName);
							}
							list.Insert(++num2, text);
							list.Insert(++num2, keyValuePair.Value.ElemParm);
							list.Insert(++num2, keyValuePair.Value.Unit);
							string text3 = keyValuePair.Value.Amount.ToString("0.00");
							if (text3.IndexOf('.') != -1)
							{
								text3 = text3.TrimEnd(new char[]
								{
									'0'
								});
								text3 = text3.Trim(new char[]
								{
									'.'
								});
							}
							list.Insert(++num2, text3);
							list.Insert(num2 + 1, "");
							dictionary2.Add(num, new ElectricEquipMaterialList.GridParameter(list, keyValuePair.Value.LstElemParm, keyValuePair.Value.LstFilter));
							num++;
						}
					}
					this.m_lstDicMaterialData.Add(dictionary2);
				}
			}
		}

		private bool EquipElemExsit(string name, List<string> lstFilter, Dictionary<int, ElectricEquipMaterialList.GridParameter> dicEquipData, out int key)
		{
			foreach (int num in dicEquipData.Keys)
			{
				List<string> lstParm = dicEquipData[num].LstParm;
				if (name == lstParm[1] && this.SameFilter(dicEquipData[num].LstFilter, lstFilter))
				{
					key = num;
					return true;
				}
			}
			key = -1;
			return false;
		}

		private bool MaterialElemExsit(string name, List<string> lstFilter, Dictionary<int, ElectricEquipMaterialList.GridParameter> dicMaterialData, out int key)
		{
			int index;
			if (this.m_gridSetInfo.Legend)
			{
				index = 2;
			}
			else
			{
				index = 1;
			}
			foreach (int num in dicMaterialData.Keys)
			{
				List<string> lstParm = dicMaterialData[num].LstParm;
				if (name == lstParm[index] && this.SameFilter(dicMaterialData[num].LstFilter, lstFilter))
				{
					key = num;
					return true;
				}
			}
			key = -1;
			return false;
		}

		private bool SameFilter(List<string> lstCurFilter, List<string> lstFilter)
		{
			if (lstCurFilter.Count != lstFilter.Count)
			{
				return false;
			}
			for (int i = 0; i < lstCurFilter.Count; i++)
			{
				if (lstCurFilter[i] != lstFilter[i])
				{
					return false;
				}
			}
			return true;
		}

		private bool SetDataToGridUp()
		{
			if (this.m_lstDicEquipData.Count <= 0 || this.m_lstDicMaterialData.Count <= 0 || this.m_grid == null)
			{
				YJKMessageBox.Show("没有统计数据");
				return false;
			}
			this.m_grid.Cell(1, 1).Text = this.m_strGridName;
			this.m_grid.Cell(1, 1).FontSize = this.m_gridSetInfo.TitleFontSize;
			int num = 3;
			this.SetEquipDataToGridUp(ref num);
			num++;
			this.SetMaterialDataToGridUp(num);
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).WrapText = true;
			this.m_grid.Range(2, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).FontName = this.m_gridSetInfo.FontName;
			this.m_grid.Range(2, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).FontSize = this.m_gridSetInfo.FontSize;
			if (!this.m_gridSetInfo.SetColWidth)
			{
				for (int i = 1; i < this.m_grid.Cols; i++)
				{
					this.m_grid.Column(i).AutoFit();
				}
			}
			for (int j = 1; j < this.m_grid.Rows; j++)
			{
				this.m_grid.Row(j).AutoFit();
			}
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).set_Borders(EdgeEnum.Outside, LineStyleEnum.Thick);
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).set_Borders(EdgeEnum.Inside, LineStyleEnum.Thin);
			return true;
		}

		private void SetEquipDataToGridUp(ref int nStartRow)
		{
			int lastCol = 0;
			if (this.m_gridSetInfo.Legend)
			{
				lastCol = 7;
			}
			else
			{
				lastCol = 6;
			}
			int num = 0;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary in this.m_lstDicEquipData)
			{
				num += dictionary.Count;
			}
			if (num - 3 > 0)
			{
				this.m_grid.InsertRow(nStartRow, num - 3);
			}
			else
			{
				this.m_grid.Range(nStartRow + num, 1, nStartRow + 2, lastCol).DeleteByRow();
			}
			int firstRow = nStartRow;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary2 in this.m_lstDicEquipData)
			{
				firstRow = nStartRow;
				foreach (KeyValuePair<int, ElectricEquipMaterialList.GridParameter> keyValuePair in dictionary2)
				{
					ElectricEquipMaterialList.GridParameter value = keyValuePair.Value;
					if (value.LstParm.Count > 0)
					{
						string text = "";
						for (int i = 0; i < value.LstSpec.Count; i++)
						{
							text += value.LstSpec[i];
							if (value.LstSpec.Count > 1)
							{
								text += "\r\n";
							}
						}
						for (int j = 0; j < value.LstParm.Count; j++)
						{
							if (j == 4)
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = Math.Ceiling(Convert.ToDouble(value.LstParm[j]) * (1.0 + (double)this.m_gridSetInfo.Margin / 100.0)).ToString("0");
							}
							else
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = value.LstParm[j];
							}
							this.m_grid.Cell(nStartRow, j + 1).Alignment = AlignmentEnum.CenterCenter;
						}
						if (this.m_gridSetInfo.Legend)
						{
							this.m_grid.Range(nStartRow, 6, nStartRow, lastCol).Merge();
						}
						this.m_grid.Cell(nStartRow, 3).Text = text;
						this.m_grid.Cell(nStartRow, 3).WrapText = true;
						this.m_grid.Cell(nStartRow, 3).Alignment = AlignmentEnum.LeftTop;
						nStartRow++;
					}
				}
			}
			this.m_grid.Range(firstRow, 2, nStartRow - 1, this.m_grid.Cols - 1).Sort(2, SortTypeEnum.Text, SortEnum.Ascending);
		}

		private void SetMaterialDataToGridUp(int nStartRow)
		{
			int num = -1;
			int lastCol = 0;
			int num2 = 0;
			int col = 0;
			int col2 = 0;
			if (this.m_gridSetInfo.Legend)
			{
				num = 1;
				lastCol = 7;
				num2 = 5;
				col = 4;
				col2 = 3;
			}
			else
			{
				lastCol = 6;
				num2 = 4;
				col = 3;
				col2 = 2;
			}
			int num3 = 0;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary in this.m_lstDicMaterialData)
			{
				num3 += dictionary.Count;
			}
			if (num3 - 3 > 0)
			{
				this.m_grid.InsertRow(nStartRow, num3 - 3);
			}
			else
			{
				this.m_grid.Range(nStartRow + num3, 1, nStartRow + 2, lastCol).DeleteByRow();
			}
			int firstRow = nStartRow;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary2 in this.m_lstDicMaterialData)
			{
				firstRow = nStartRow;
				foreach (KeyValuePair<int, ElectricEquipMaterialList.GridParameter> keyValuePair in dictionary2)
				{
					ElectricEquipMaterialList.GridParameter value = keyValuePair.Value;
					if (value.LstParm.Count > 0)
					{
						string text = "";
						for (int i = 0; i < value.LstSpec.Count; i++)
						{
							text += value.LstSpec[i];
							if (value.LstSpec.Count > 1)
							{
								text += "\r\n";
							}
						}
						int j = 0;
						while (j < value.LstParm.Count)
						{
							if (j == num)
							{
								string text2 = value.LstParm[j];
								string legendByFamilyName = FamilyLegend.GetLegendByFamilyName(this.m_doc, text2);
								text2 = Path.GetFileName(legendByFamilyName);
								try
								{
									this.m_grid.Images.Add(legendByFamilyName, text2);
									if (this.m_grid.Images.Item(text2) == null)
									{
										goto IL_266;
									}
									this.m_grid.Cell(nStartRow, j + 1).SetImage(text2);
									goto IL_24F;
								}
								catch
								{
									goto IL_266;
								}
								goto IL_1C9;
							}
							goto IL_1C9;
							IL_266:
							j++;
							continue;
							IL_24F:
							this.m_grid.Cell(nStartRow, j + 1).Alignment = AlignmentEnum.CenterCenter;
							goto IL_266;
							IL_1C9:
							if (j == num2)
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = Math.Ceiling(Convert.ToDouble(value.LstParm[j]) * (1.0 + (double)this.m_gridSetInfo.Margin / 100.0)).ToString("0");
								goto IL_24F;
							}
							this.m_grid.Cell(nStartRow, j + 1).Text = value.LstParm[j];
							goto IL_24F;
						}
						this.m_grid.Cell(nStartRow, col).Text = text;
						this.m_grid.Cell(nStartRow, col).WrapText = true;
						this.m_grid.Cell(nStartRow, col).Alignment = AlignmentEnum.LeftTop;
						nStartRow++;
					}
				}
				this.m_grid.Range(firstRow, 2, nStartRow - 1, this.m_grid.Cols - 1).Sort(col2, SortTypeEnum.Text, SortEnum.Ascending);
			}
		}

		private bool SetDataToGridDown()
		{
			if (this.m_lstDicEquipData.Count <= 0 || this.m_lstDicMaterialData.Count <= 0 || this.m_grid == null)
			{
				YJKMessageBox.Show("没有统计数据");
				return false;
			}
			int cols = 0;
			if (this.m_gridSetInfo.Legend)
			{
				cols = 8;
			}
			else
			{
				cols = 7;
			}
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).DeleteByRow();
			int num = 1;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary in this.m_lstDicEquipData)
			{
				num += dictionary.Count;
			}
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary2 in this.m_lstDicMaterialData)
			{
				num += dictionary2.Count;
			}
			this.m_grid.Rows = num + 3;
			this.m_grid.Cols = cols;
			this.DrawEquipGridTitle(num);
			int num2 = 0;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary3 in this.m_lstDicMaterialData)
			{
				num2 += dictionary3.Count;
			}
			this.DrawMaterialGridTitle(num2);
			this.SetEquipDataToGridDown(num);
			this.SetMaterialDataToGridDown(num2);
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).WrapText = true;
			this.m_grid.Range(1, 1, num + 2, this.m_grid.Cols - 1).FontName = this.m_gridSetInfo.FontName;
			this.m_grid.Range(1, 1, num + 2, this.m_grid.Cols - 1).FontSize = this.m_gridSetInfo.FontSize;
			if (!this.m_gridSetInfo.SetColWidth)
			{
				for (int i = 1; i < this.m_grid.Cols; i++)
				{
					this.m_grid.Column(i).AutoFit();
				}
			}
			for (int j = 1; j < this.m_grid.Rows; j++)
			{
				this.m_grid.Row(j).AutoFit();
			}
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).set_Borders(EdgeEnum.Outside, LineStyleEnum.Thick);
			this.m_grid.Range(1, 1, this.m_grid.Rows - 1, this.m_grid.Cols - 1).set_Borders(EdgeEnum.Inside, LineStyleEnum.Thin);
			return true;
		}

		private void SetEquipDataToGridDown(int nStartRow)
		{
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary in this.m_lstDicEquipData)
			{
				int firstRow = nStartRow;
				foreach (KeyValuePair<int, ElectricEquipMaterialList.GridParameter> keyValuePair in dictionary)
				{
					ElectricEquipMaterialList.GridParameter value = keyValuePair.Value;
					if (value.LstParm.Count > 0)
					{
						string text = "";
						for (int i = 0; i < value.LstSpec.Count; i++)
						{
							text += value.LstSpec[i];
							if (value.LstSpec.Count > 1)
							{
								text += "\r\n";
							}
						}
						for (int j = 0; j < value.LstParm.Count; j++)
						{
							if (j == 4)
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = Math.Ceiling(Convert.ToDouble(value.LstParm[j]) * (1.0 + (double)this.m_gridSetInfo.Margin / 100.0)).ToString("0");
							}
							else
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = value.LstParm[j];
							}
							this.m_grid.Cell(nStartRow, j + 1).Alignment = AlignmentEnum.CenterCenter;
						}
						if (this.m_gridSetInfo.Legend)
						{
							this.m_grid.Range(nStartRow, 6, nStartRow, 7).Merge();
						}
						this.m_grid.Cell(nStartRow, 3).Text = text;
						this.m_grid.Cell(nStartRow, 3).WrapText = true;
						this.m_grid.Cell(nStartRow, 3).Alignment = AlignmentEnum.LeftTop;
						nStartRow--;
					}
				}
				this.m_grid.Range(firstRow, 2, nStartRow + 1, this.m_grid.Cols - 1).Sort(2, SortTypeEnum.Text, SortEnum.Ascending);
			}
		}

		private void SetMaterialDataToGridDown(int nStartRow)
		{
			int num = -1;
			int num2 = 0;
			int col = 0;
			int col2 = 0;
			if (this.m_gridSetInfo.Legend)
			{
				num = 1;
				num2 = 5;
				col = 4;
				col2 = 3;
			}
			else
			{
				num2 = 4;
				col = 3;
				col2 = 2;
			}
			int firstRow = nStartRow;
			foreach (Dictionary<int, ElectricEquipMaterialList.GridParameter> dictionary in this.m_lstDicMaterialData)
			{
				firstRow = nStartRow;
				foreach (KeyValuePair<int, ElectricEquipMaterialList.GridParameter> keyValuePair in dictionary)
				{
					ElectricEquipMaterialList.GridParameter value = keyValuePair.Value;
					if (value.LstParm.Count > 0)
					{
						string text = "";
						for (int i = 0; i < value.LstSpec.Count; i++)
						{
							text += value.LstSpec[i];
							if (value.LstSpec.Count > 1)
							{
								text += "\r\n";
							}
						}
						int j = 0;
						while (j < value.LstParm.Count)
						{
							if (j == num)
							{
								string text2 = value.LstParm[j];
								string legendByFamilyName = FamilyLegend.GetLegendByFamilyName(this.m_doc, text2);
								text2 = Path.GetFileName(legendByFamilyName);
								try
								{
									this.m_grid.Images.Add(legendByFamilyName, text2);
									if (this.m_grid.Images.Item(text2) == null)
									{
										goto IL_1EB;
									}
									this.m_grid.Cell(nStartRow, j + 1).SetImage(text2);
									goto IL_1D4;
								}
								catch
								{
									goto IL_1EB;
								}
								goto IL_14E;
							}
							goto IL_14E;
							IL_1EB:
							j++;
							continue;
							IL_1D4:
							this.m_grid.Cell(nStartRow, j + 1).Alignment = AlignmentEnum.CenterCenter;
							goto IL_1EB;
							IL_14E:
							if (j == num2)
							{
								this.m_grid.Cell(nStartRow, j + 1).Text = Math.Ceiling(Convert.ToDouble(value.LstParm[j]) * (1.0 + (double)this.m_gridSetInfo.Margin / 100.0)).ToString("0");
								goto IL_1D4;
							}
							this.m_grid.Cell(nStartRow, j + 1).Text = value.LstParm[j];
							goto IL_1D4;
						}
						this.m_grid.Cell(nStartRow, col).Text = text;
						this.m_grid.Cell(nStartRow, col).Alignment = AlignmentEnum.LeftTop;
						nStartRow--;
					}
				}
				this.m_grid.Range(firstRow, 2, nStartRow + 1, this.m_grid.Cols - 1).Sort(col2, SortTypeEnum.Text, SortEnum.Ascending);
			}
		}

		private void DrawEquipGridTitle(int nRows)
		{
			this.m_grid.Cell(nRows + 1, 1).Text = "序号";
			this.m_grid.Cell(nRows + 1, 2).Text = "名称";
			this.m_grid.Cell(nRows + 1, 3).Text = "型号及规格";
			this.m_grid.Cell(nRows + 1, 4).Text = "单位";
			this.m_grid.Cell(nRows + 1, 5).Text = "数量";
			this.m_grid.Cell(nRows + 1, 6).Text = "备注";
			int num;
			if (this.m_gridSetInfo.Legend)
			{
				num = 8;
				this.m_grid.Range(nRows + 1, 6, nRows + 1, num).Merge();
			}
			else
			{
				num = 7;
			}
			this.m_grid.Cell(nRows + 2, 1).Text = this.m_strGridName;
			this.m_grid.Range(nRows + 2, 1, nRows + 2, num - 1).Merge();
			this.m_grid.Cell(nRows + 2, 1).FontSize = this.m_gridSetInfo.TitleFontSize;
			this.m_grid.Range(nRows + 1, 1, nRows + 2, num - 1).Alignment = AlignmentEnum.CenterCenter;
		}

		private void DrawMaterialGridTitle(int nRows)
		{
			int num = 1;
			this.m_grid.Cell(nRows + 1, num).Text = "序号";
			if (this.m_gridSetInfo.Legend)
			{
				this.m_grid.Cell(nRows + 1, ++num).Text = "图例";
			}
			this.m_grid.Cell(nRows + 1, ++num).Text = "名称";
			this.m_grid.Cell(nRows + 1, ++num).Text = "规格";
			this.m_grid.Cell(nRows + 1, ++num).Text = "单位";
			this.m_grid.Cell(nRows + 1, ++num).Text = "数量";
			this.m_grid.Cell(nRows + 1, ++num).Text = "备注";
			this.m_grid.Range(nRows + 1, 1, nRows + 1, num).Alignment = AlignmentEnum.CenterCenter;
		}

		private Document m_doc;

		private List<Dictionary<int, SatatisticDataInfo>> m_lstDicElems;

        private FlexCell.Grid m_grid;

		private List<Dictionary<int, ElectricEquipMaterialList.GridParameter>> m_lstDicEquipData = new List<Dictionary<int, ElectricEquipMaterialList.GridParameter>>();

		private List<Dictionary<int, ElectricEquipMaterialList.GridParameter>> m_lstDicMaterialData = new List<Dictionary<int, ElectricEquipMaterialList.GridParameter>>();

		private string m_strGridName = "";

		private GridSetInfo m_gridSetInfo;

		private struct GridParameter
		{
			public List<string> LstParm
			{
				get
				{
					return this.m_lstParm;
				}
				set
				{
					this.m_lstParm = value;
				}
			}

			public List<string> LstSpec
			{
				get
				{
					return this.m_lstSepcification;
				}
				set
				{
					this.m_lstSepcification = value;
				}
			}

			public List<string> LstFilter
			{
				get
				{
					return this.m_lstFilter;
				}
				set
				{
					this.m_lstFilter = value;
				}
			}

			public GridParameter(List<string> lstOtherParm, List<string> lstSpecParm, List<string> lstFilter)
			{
				this.m_lstParm = lstOtherParm;
				this.m_lstSepcification = lstSpecParm;
				this.m_lstFilter = lstFilter;
			}

			private List<string> m_lstParm;

			private List<string> m_lstSepcification;

			private List<string> m_lstFilter;
		}
	}
}
